## pval_cutoff: 0.05
## lfc_cutoff: 0.58
## low_counts_cutoff: 10
General statistics
# Number of samples
length(counts_data)
## [1] 6
# Number of genes
nrow(counts_data)
## [1] 43432
# Total counts
colSums(counts_data)
## SRR13535276 SRR13535278 SRR13535280 SRR13535300 SRR13535304 SRR13535302
## 7431251 7870063 9246891 11429276 4943888 7587191

Create DDS objects
# Create DESeqDataSet object
dds <- get_DESeqDataSet_obj(counts_data, ~ experimental_class_type)
## [1] TRUE
## [1] TRUE
## [1] "DESeqDataSet object of length 43432 with 0 metadata columns"
## [1] "DESeqDataSet object of length 14275 with 0 metadata columns"
colData(dds)
## DataFrame with 6 rows and 3 columns
## experimental_class_type regime treatment
## <factor> <factor> <character>
## SRR13535276 A in space without gravity without nanoceria
## SRR13535278 A in space without gravity without nanoceria
## SRR13535280 A in space without gravity without nanoceria
## SRR13535300 E on land without nanoceria
## SRR13535304 E on land without nanoceria
## SRR13535302 E on land without nanoceria
Sample-to-sample comparisons
# Transform data (blinded rlog)
rld <- get_transformed_data(dds)
PCA plot
pca <- rld$pca
pca_df <- cbind(as.data.frame(colData(dds)) %>% rownames_to_column(var = 'name'), pca$x)
summary(pca)
## Importance of components:
## PC1 PC2 PC3 PC4 PC5 PC6
## Standard deviation 42.2062 36.7569 26.4782 20.41911 18.57696 1.042e-13
## Proportion of Variance 0.3876 0.2940 0.1526 0.09073 0.07509 0.000e+00
## Cumulative Proportion 0.3876 0.6816 0.8342 0.92491 1.00000 1.000e+00
ggplot(pca_df, aes(x = PC1, y = PC2, color = regime)) +
geom_point() +
geom_text(aes(label = name), position = position_nudge(y = -2), show.legend = F, size = 3) +
scale_color_manual(values = colors_default) +
scale_x_continuous(expand = c(0.2, 0))

Correlation heatmap
pheatmap(
cor(rld$matrix),
annotation_col = as.data.frame(colData(dds)) %>% select(regime),
color = brewer.pal(8, 'YlOrRd')
)

Wald test results
# DE analysis using Wald test
dds_full <- DESeq(dds)
colData(dds_full)
## DataFrame with 6 rows and 4 columns
## experimental_class_type regime treatment sizeFactor
## <factor> <factor> <character> <numeric>
## SRR13535276 A in space without gravity without nanoceria 0.890351911081058
## SRR13535278 A in space without gravity without nanoceria 1.2723878102654
## SRR13535280 A in space without gravity without nanoceria 1.01177721722733
## SRR13535300 E on land without nanoceria 1.80577902589679
## SRR13535304 E on land without nanoceria 0.544609903431417
## SRR13535302 E on land without nanoceria 0.840265447856851
# Wald test results
res <- results(
dds_full,
contrast = c('experimental_class_type', condition, control),
alpha = pval_cutoff
)
res
## log2 fold change (MLE): experimental_class_type A vs E
## Wald test p-value: experimental class type A vs E
## DataFrame with 14275 rows and 6 columns
## baseMean log2FoldChange lfcSE stat pvalue padj
## <numeric> <numeric> <numeric> <numeric> <numeric> <numeric>
## ENSMUSG00000025900 6.72355564809091 -5.27907968302405 1.94697331145868 -2.71142888911453 0.00669939092191819 0.0977380527099574
## ENSMUSG00000098104 4.04777257555554 0.918393906549311 1.12706657629883 0.814853288938103 0.415156293638653 NA
## ENSMUSG00000033845 135.106665011797 -0.114314427504993 0.449031212840659 -0.254580136605244 0.799047402489011 0.924692806190793
## ENSMUSG00000102275 2.4476791038974 -0.28027599054799 1.51090675966215 -0.185501844343235 0.852835433794831 NA
## ENSMUSG00000025903 127.71958979701 0.027973884922881 0.48743942914673 0.0573894585668822 0.954234960008676 0.983640816559364
## ... ... ... ... ... ... ...
## ENSMUSG00000061654 2.40509562723468 0.56151269440417 2.31000796838754 0.243078249983754 0.807944779973702 NA
## ENSMUSG00000079834 37.1708875153352 1.08937820848042 0.837423437875257 1.30086902182298 0.193303291295403 0.520334059851999
## ENSMUSG00000069049 1.13507018762861 -3.73308799195748 3.06618823457661 -1.21750124465955 0.223413563160865 NA
## ENSMUSG00000069045 1.94385341784525 -4.48245904192134 2.16591816414958 -2.06954219975404 0.0384952356010428 NA
## ENSMUSG00000096768 261.628722500515 0.530586415481487 0.641518833762957 0.82707846996358 0.408192586463828 0.721909795954029
mcols(res)
## DataFrame with 6 rows and 2 columns
## type description
## <character> <character>
## baseMean intermediate mean of normalized counts for all samples
## log2FoldChange results log2 fold change (MLE): experimental_class_type A vs E
## lfcSE results standard error: experimental class type A vs E
## stat results Wald statistic: experimental class type A vs E
## pvalue results Wald test p-value: experimental class type A vs E
## padj results BH adjusted p-values
summary(res)
##
## out of 14275 with nonzero total read count
## adjusted p-value < 0.05
## LFC > 0 (up) : 283, 2%
## LFC < 0 (down) : 183, 1.3%
## outliers [1] : 178, 1.2%
## low counts [2] : 2491, 17%
## (mean count < 5)
## [1] see 'cooksCutoff' argument of ?results
## [2] see 'independentFiltering' argument of ?results
Summary details
# Upregulated genes (LFC > 0)
res_sig_df %>% filter(log2FoldChange > 0)
# Downregulated genes (LFC < 0)
res_sig_df %>% filter(log2FoldChange < 0)
# Outliers (pvalue and padj are NA)
res[which(is.na(res$pvalue)), ]
## log2 fold change (MLE): experimental_class_type A vs E
## Wald test p-value: experimental class type A vs E
## DataFrame with 178 rows and 6 columns
## baseMean log2FoldChange lfcSE stat pvalue padj
## <numeric> <numeric> <numeric> <numeric> <numeric> <numeric>
## ENSMUSG00000067780 449.463885209604 -2.56912503369463 1.41465476098212 -1.81607916260149 NA NA
## ENSMUSG00000025981 202.895900413479 -0.331200438425511 1.14505457181251 -0.2892442391643 NA NA
## ENSMUSG00000038349 137.409224779025 -4.11798275514609 1.21117094069276 -3.40000128536003 NA NA
## ENSMUSG00000026024 63.7313106025143 -3.71503868887985 1.23407543673224 -3.01038216814124 NA NA
## ENSMUSG00000025964 364.841597937862 -6.63446437591557 1.40730185285522 -4.71431510052742 NA NA
## ... ... ... ... ... ... ...
## ENSMUSG00000085669 27.1634251862515 -6.61880595420033 3.41639299627773 -1.93736667924672 NA NA
## ENSMUSG00000042595 85.9906429710052 -0.057377363511326 1.26273584773735 -0.0454389281924151 NA NA
## ENSMUSG00000031274 57.7295627090399 -1.34224379697914 1.20099695072727 -1.11760799739444 NA NA
## ENSMUSG00000043518 98.6309827509387 -23.9555393201487 3.90730169306791 -6.13096740460279 NA NA
## ENSMUSG00000059493 170.477814253401 -1.48150453395576 1.65708876101296 -0.894040541950293 NA NA
# Low counts (only padj is NA)
res[which(is.na(res$padj) & !is.na(res$pvalue)), ]
## log2 fold change (MLE): experimental_class_type A vs E
## Wald test p-value: experimental class type A vs E
## DataFrame with 2491 rows and 6 columns
## baseMean log2FoldChange lfcSE stat pvalue padj
## <numeric> <numeric> <numeric> <numeric> <numeric> <numeric>
## ENSMUSG00000098104 4.04777257555554 0.918393906549311 1.12706657629883 0.814853288938103 0.415156293638653 NA
## ENSMUSG00000102275 2.4476791038974 -0.28027599054799 1.51090675966215 -0.185501844343235 0.852835433794831 NA
## ENSMUSG00000098201 2.31792316350187 -1.06704387285368 1.74331217335386 -0.612078484371997 0.540485831951131 NA
## ENSMUSG00000097797 2.200860318904 0.544284247351846 1.88656079669142 0.288506073224035 0.772959382305116 NA
## ENSMUSG00000079671 2.73980664914685 0.36382624425652 1.43282613646106 0.253922115878718 0.799555728625726 NA
## ... ... ... ... ... ... ...
## ENSMUSG00000081137 2.57139887069203 4.72539121655869 2.06054449743679 2.29327307536276 0.0218322883308133 NA
## ENSMUSG00000035299 4.26723133187588 1.48313136031172 1.85684793801469 0.798736035379107 0.424443487094305 NA
## ENSMUSG00000061654 2.40509562723468 0.56151269440417 2.31000796838754 0.243078249983754 0.807944779973702 NA
## ENSMUSG00000069049 1.13507018762861 -3.73308799195748 3.06618823457661 -1.21750124465955 0.223413563160865 NA
## ENSMUSG00000069045 1.94385341784525 -4.48245904192134 2.16591816414958 -2.06954219975404 0.0384952356010428 NA
Shrunken LFC results
plotMA(res)

# Shrunken LFC results
res_shrunken <- lfcShrink(
dds_full,
coef = str_c('experimental_class_type_', condition, '_vs_', control),
type = 'apeglm'
)
res_shrunken
## log2 fold change (MAP): experimental class type A vs E
## Wald test p-value: experimental class type A vs E
## DataFrame with 14275 rows and 5 columns
## baseMean log2FoldChange lfcSE pvalue padj
## <numeric> <numeric> <numeric> <numeric> <numeric>
## ENSMUSG00000025900 6.72355564809091 -0.31001770618322 0.64572207997742 0.00669939092191819 0.0996973650576057
## ENSMUSG00000098104 4.04777257555554 0.156251717318304 0.480893018259275 0.415156293638653 NA
## ENSMUSG00000033845 135.106665011797 -0.0622902876032541 0.333888130638184 0.799047402489011 0.925626855505646
## ENSMUSG00000102275 2.4476791038974 -0.0259866062359451 0.470831706856148 0.852835433794831 NA
## ENSMUSG00000025903 127.71958979701 0.0150821819199456 0.346763162870092 0.954234960008676 0.983876840601549
## ... ... ... ... ... ...
## ENSMUSG00000061654 2.40509562723468 0.0251804285287201 0.483606772815813 0.807944779973702 NA
## ENSMUSG00000079834 37.1708875153352 0.315256541399395 0.52803994245203 0.193303291295403 0.521032050363089
## ENSMUSG00000069049 1.13507018762861 -0.0804099571056926 0.501707190137518 0.223413563160865 NA
## ENSMUSG00000069045 1.94385341784525 -0.195721769503875 0.546893809926116 0.0384952356010428 NA
## ENSMUSG00000096768 261.628722500515 0.208294470757223 0.424298821798537 0.408192586463828 0.722956808383144
plotMA(res_shrunken)

mcols(res_shrunken)
## DataFrame with 5 rows and 2 columns
## type description
## <character> <character>
## baseMean intermediate mean of normalized counts for all samples
## log2FoldChange results log2 fold change (MAP): experimental class type A vs E
## lfcSE results posterior SD: experimental class type A vs E
## pvalue results Wald test p-value: experimental class type A vs E
## padj results BH adjusted p-values
summary(res_shrunken, alpha = pval_cutoff)
##
## out of 14275 with nonzero total read count
## adjusted p-value < 0.05
## LFC > 0 (up) : 273, 1.9%
## LFC < 0 (down) : 178, 1.2%
## outliers [1] : 178, 1.2%
## low counts [2] : 2214, 16%
## (mean count < 4)
## [1] see 'cooksCutoff' argument of ?results
## [2] see 'independentFiltering' argument of ?results
Summary details
# Upregulated genes (LFC > 0)
res_shrunken_sig_df %>% filter(log2FoldChange > 0)
# Downregulated genes (LFC < 0)
res_shrunken_sig_df %>% filter(log2FoldChange < 0)
# Outliers (pvalue and padj are NA)
res_shrunken[which(is.na(res_shrunken$pvalue)), ]
## log2 fold change (MAP): experimental class type A vs E
## Wald test p-value: experimental class type A vs E
## DataFrame with 178 rows and 5 columns
## baseMean log2FoldChange lfcSE pvalue padj
## <numeric> <numeric> <numeric> <numeric> <numeric>
## ENSMUSG00000067780 449.463885209604 -0.266441555518191 0.581781376460456 NA NA
## ENSMUSG00000025981 202.895900413479 -0.0504628369071744 0.456567013890924 NA NA
## ENSMUSG00000038349 137.409224779025 -3.21135035701177 1.4768344614606 NA NA
## ENSMUSG00000026024 63.7313106025143 -2.54426444913842 1.74637484602938 NA NA
## ENSMUSG00000025964 364.841597937862 -5.95320678133029 1.52373476860405 NA NA
## ... ... ... ... ... ...
## ENSMUSG00000085669 27.1634251862515 -0.0661584362025747 0.499990908653935 NA NA
## ENSMUSG00000042595 85.9906429710052 -0.00615966851453763 0.459727354818476 NA NA
## ENSMUSG00000031274 57.7295627090399 -0.19739651183202 0.510426917418106 NA NA
## ENSMUSG00000043518 98.6309827509387 -0.0508814895674652 0.497543068315669 NA NA
## ENSMUSG00000059493 170.477814253401 -0.114908958986714 0.494986497198064 NA NA
# Low counts (only padj is NA)
res_shrunken[which(is.na(res_shrunken$padj) & !is.na(res_shrunken$pvalue)), ]
## log2 fold change (MAP): experimental class type A vs E
## Wald test p-value: experimental class type A vs E
## DataFrame with 2214 rows and 5 columns
## baseMean log2FoldChange lfcSE pvalue padj
## <numeric> <numeric> <numeric> <numeric> <numeric>
## ENSMUSG00000098104 4.04777257555554 0.156251717318304 0.480893018259275 0.415156293638653 NA
## ENSMUSG00000102275 2.4476791038974 -0.0259866062359451 0.470831706856148 0.852835433794831 NA
## ENSMUSG00000098201 2.31792316350187 -0.0793007532656044 0.484236970038564 0.540485831951131 NA
## ENSMUSG00000097797 2.200860318904 0.0353731478759256 0.4793173199521 0.772959382305116 NA
## ENSMUSG00000079671 2.73980664914685 0.0398208131907963 0.468237061186201 0.799555728625726 NA
## ... ... ... ... ... ...
## ENSMUSG00000081137 2.57139887069203 0.227969394121044 0.567999148374236 0.0218322883308133 NA
## ENSMUSG00000035299 4.26723133187588 0.0926506167016492 0.491431088842307 0.424443487094305 NA
## ENSMUSG00000061654 2.40509562723468 0.0251804285287201 0.483606772815813 0.807944779973702 NA
## ENSMUSG00000069049 1.13507018762861 -0.0804099571056926 0.501707190137518 0.223413563160865 NA
## ENSMUSG00000069045 1.94385341784525 -0.195721769503875 0.546893809926116 0.0384952356010428 NA
Visualizing results
Heatmaps
# Plot normalized counts (z-scores)
pheatmap(counts_sig_norm[2:7],
color = brewer.pal(8, 'YlOrRd'),
cluster_rows = T,
show_rownames = F,
annotation_col = as.data.frame(colData(dds)) %>% select(regime),
border_color = NA,
fontsize = 10,
scale = 'row',
fontsize_row = 10,
height = 20)

# Plot log-transformed counts
pheatmap(counts_sig_log[2:7],
color = rev(brewer.pal(8, 'RdYlBu')),
cluster_rows = T,
show_rownames = F,
annotation_col = as.data.frame(colData(dds)) %>% select(regime),
border_color = NA,
fontsize = 10,
fontsize_row = 10,
height = 20)

# Plot log-transformed counts (top 24 DE genes)
pheatmap((counts_sig_log %>% filter(ensembl_gene_id %in% res_sig_df$ensembl_gene_id[1:24]))[2:7],
color = rev(brewer.pal(8, 'RdYlBu')),
cluster_rows = T,
show_rownames = F,
annotation_col = as.data.frame(colData(dds)) %>% select(regime),
fontsize = 10,
fontsize_row = 10,
height = 20)

Volcano plots
# Unshrunken LFC
res_df %>%
mutate(
sig_threshold = if_else(
padj < pval_cutoff & abs(log2FoldChange) >= lfc_cutoff,
if_else(log2FoldChange > 0, 'DE-up', 'DE-down'),
'non-DE'
)
) %>%
filter(!is.na(sig_threshold)) %>%
ggplot() +
geom_point(aes(x = log2FoldChange, y = -log10(padj), colour = sig_threshold)) +
scale_color_manual(values = c('blue', 'red', 'gray')) +
xlab('log2 fold change') +
ylab('-log10 adjusted p-value')

# Shrunken LFC
res_shrunken_df %>%
mutate(
sig_threshold = if_else(
padj < pval_cutoff & abs(log2FoldChange) >= lfc_cutoff,
if_else(log2FoldChange > 0, 'DE-up', 'DE-down'),
'non-DE'
)
) %>%
filter(!is.na(sig_threshold)) %>%
ggplot() +
geom_point(aes(x = log2FoldChange, y = -log10(padj), colour = sig_threshold)) +
scale_color_manual(values = c('blue', 'red', 'gray')) +
xlab('log2 fold change') +
ylab('-log10 adjusted p-value')

GSEA (all)
Hallmark genesets
# Shrunken LFC
get_fgsea_res(rank_lfc, mm_h) %>% plot_enrichment_table(rank_lfc, mm_h)

# Wald stat
get_fgsea_res(rank_stat, mm_h) %>% plot_enrichment_table(rank_stat, mm_h)

# Rank: sign(LFC) * -log10(pvalue)
get_fgsea_res(rank_pval, mm_h) %>% plot_enrichment_table(rank_pval, mm_h)

GO biological process
# Shrunken LFC
get_fgsea_res(rank_lfc, mm_c5_bp) %>% plot_enrichment_table(rank_lfc, mm_c5_bp)

# Wald stat
get_fgsea_res(rank_stat, mm_c5_bp) %>% plot_enrichment_table(rank_stat, mm_c5_bp)

# Rank: sign(LFC) * -log10(pvalue)
get_fgsea_res(rank_pval, mm_c5_bp) %>% plot_enrichment_table(rank_pval, mm_c5_bp)

GO cellular component
# Shrunken LFC
get_fgsea_res(rank_lfc, mm_c5_cc) %>% plot_enrichment_table(rank_lfc, mm_c5_cc)

# Wald stat
get_fgsea_res(rank_stat, mm_c5_cc) %>% plot_enrichment_table(rank_stat, mm_c5_cc)

# Rank: sign(LFC) * -log10(pvalue)
get_fgsea_res(rank_pval, mm_c5_cc) %>% plot_enrichment_table(rank_pval, mm_c5_cc)

GO molecular function
# Shrunken LFC
get_fgsea_res(rank_lfc, mm_c5_mf) %>% plot_enrichment_table(rank_lfc, mm_c5_mf)

# Wald stat
get_fgsea_res(rank_stat, mm_c5_mf) %>% plot_enrichment_table(rank_stat, mm_c5_mf)

# Rank: sign(LFC) * -log10(pvalue)
get_fgsea_res(rank_pval, mm_c5_mf) %>% plot_enrichment_table(rank_pval, mm_c5_mf)

GSEA (DE)
Hallmark genesets
# Shrunken LFC
get_fgsea_res(rank_lfc, mm_h) %>% plot_enrichment_table(rank_lfc, mm_h)

# Wald stat
get_fgsea_res(rank_stat, mm_h) %>% plot_enrichment_table(rank_stat, mm_h)

# Rank: sign(LFC) * -log10(pvalue)
get_fgsea_res(rank_pval, mm_h) %>% plot_enrichment_table(rank_pval, mm_h)

GO biological process
# Shrunken LFC
get_fgsea_res(rank_lfc, mm_c5_bp) %>% plot_enrichment_table(rank_lfc, mm_c5_bp)

# Wald stat
get_fgsea_res(rank_stat, mm_c5_bp) %>% plot_enrichment_table(rank_stat, mm_c5_bp)

# Rank: sign(LFC) * -log10(pvalue)
get_fgsea_res(rank_pval, mm_c5_bp) %>% plot_enrichment_table(rank_pval, mm_c5_bp)

GO cellular component
# Shrunken LFC
get_fgsea_res(rank_lfc, mm_c5_cc) %>% plot_enrichment_table(rank_lfc, mm_c5_cc)

# Wald stat
get_fgsea_res(rank_stat, mm_c5_cc) %>% plot_enrichment_table(rank_stat, mm_c5_cc)

# Rank: sign(LFC) * -log10(pvalue)
get_fgsea_res(rank_pval, mm_c5_cc) %>% plot_enrichment_table(rank_pval, mm_c5_cc)

GO molecular function
# Shrunken LFC
get_fgsea_res(rank_lfc, mm_c5_mf) %>% plot_enrichment_table(rank_lfc, mm_c5_mf)

# Wald stat
get_fgsea_res(rank_stat, mm_c5_mf) %>% plot_enrichment_table(rank_stat, mm_c5_mf)

# Rank: sign(LFC) * -log10(pvalue)
get_fgsea_res(rank_pval, mm_c5_mf) %>% plot_enrichment_table(rank_pval, mm_c5_mf)

System Info
sessionInfo()
## R version 3.6.3 (2020-02-29)
## Platform: x86_64-apple-darwin15.6.0 (64-bit)
## Running under: macOS Sierra 10.12.6
##
## Matrix products: default
## BLAS: /Library/Frameworks/R.framework/Versions/3.6/Resources/lib/libRblas.0.dylib
## LAPACK: /Library/Frameworks/R.framework/Versions/3.6/Resources/lib/libRlapack.dylib
##
## locale:
## [1] en_US.UTF-8/en_US.UTF-8/en_US.UTF-8/C/en_US.UTF-8/en_US.UTF-8
##
## attached base packages:
## [1] grid parallel stats4 stats graphics grDevices utils datasets methods base
##
## other attached packages:
## [1] VennDiagram_1.6.20 futile.logger_1.4.3 fgsea_1.12.0 Rcpp_1.0.3 RColorBrewer_1.1-2 pheatmap_1.0.12 DESeq2_1.26.0 SummarizedExperiment_1.16.1 DelayedArray_0.12.3 BiocParallel_1.20.1 matrixStats_0.57.0 Biobase_2.46.0 GenomicRanges_1.38.0 GenomeInfoDb_1.22.1 IRanges_2.20.2 S4Vectors_0.24.4 BiocGenerics_0.32.0 scales_1.1.1 forcats_0.4.0 stringr_1.4.0 dplyr_1.0.2 purrr_0.3.3 readr_1.3.1 tidyr_1.0.0 tibble_3.1.0 ggplot2_3.3.3 tidyverse_1.2.1
##
## loaded via a namespace (and not attached):
## [1] colorspace_1.4-1 ellipsis_0.3.0 htmlTable_1.13.3 XVector_0.26.0 base64enc_0.1-3 rstudioapi_0.10 farver_2.1.0 bit64_0.9-7 mvtnorm_1.1-1 apeglm_1.8.0 AnnotationDbi_1.48.0 fansi_0.4.0 lubridate_1.7.4 xml2_1.2.2 splines_3.6.3 geneplotter_1.64.0 knitr_1.25 Formula_1.2-3 jsonlite_1.6 broom_0.7.5 annotate_1.64.0 cluster_2.1.0 png_0.1-7 compiler_3.6.3 httr_1.4.1 backports_1.1.5 assertthat_0.2.1 Matrix_1.2-18 cli_1.1.0 formatR_1.7 acepack_1.4.1 htmltools_0.5.1.1 tools_3.6.3 coda_0.19-3 gtable_0.3.0 glue_1.4.2 GenomeInfoDbData_1.2.2 fastmatch_1.1-0 bbmle_1.0.23.1 cellranger_1.1.0 jquerylib_0.1.3 vctrs_0.3.4 xfun_0.22 rvest_0.3.5 lifecycle_0.2.0 XML_3.99-0.3 MASS_7.3-51.5 zlibbioc_1.32.0 hms_0.5.2 lambda.r_1.2.4 yaml_2.2.0 memoise_1.1.0 gridExtra_2.3 emdbook_1.3.12 sass_0.3.1 bdsmatrix_1.3-4 rpart_4.1-15 latticeExtra_0.6-29 stringi_1.4.3 RSQLite_2.2.1 genefilter_1.68.0 checkmate_1.9.4 rlang_0.4.8 pkgconfig_2.0.3 bitops_1.0-6 evaluate_0.14 lattice_0.20-38 labeling_0.3 htmlwidgets_1.5.1 bit_1.1-15.1 tidyselect_1.1.0 plyr_1.8.4 magrittr_1.5 R6_2.4.0 generics_0.0.2 Hmisc_4.3-0 DBI_1.1.0 pillar_1.5.1 haven_2.2.0 foreign_0.8-75 withr_2.1.2 survival_3.1-8 RCurl_1.95-4.12 nnet_7.3-12 modelr_0.1.5 crayon_1.3.4 futile.options_1.0.1 utf8_1.1.4 rmarkdown_2.7 jpeg_0.1-8.1 locfit_1.5-9.4 readxl_1.3.1 data.table_1.13.6 blob_1.2.1 digest_0.6.27 xtable_1.8-4 numDeriv_2016.8-1.1 munsell_0.5.0 bslib_0.2.4